package Q8_11_Coins;
public class Question {
public static int makeChange(int amount, int[] denoms, int index) {
if (index >= denoms.length - 1) return 1; // one denom remaining -> one way to do it
int denomAmount = denoms[index];
int ways = 0;
for (int i = 0; i * denomAmount <= amount; i++) {
int amountRemaining = amount - i * denomAmount;
ways += makeChange(amountRemaining, denoms, index + 1); // go to next denom
}
return ways;
}
public static int makeChange(int amount, int[] denoms) {
return makeChange(amount, denoms, 0);
}
public static void main(String[] args) {
int[] denoms = {25, 10, 5, 1};
int ways = makeChange(300322, denoms);
System.out.println(ways);
}
}